package com.guldan.jaina.provider;

import com.guldan.core.dubbo.client.ResponseDTO;
import com.guldan.core.search.Pagination;
import com.guldan.jaina.dto.gauthority.GAuthorityDTO;
import com.guldan.jaina.dto.gauthority.GRoleAuthSaveDTO;
import com.guldan.jaina.dto.grole.GRoleDTO;
import com.guldan.jaina.dto.users.UserCacheDTO;
import com.guldan.jaina.dto.users.UsersDTO;

import java.util.List;

/**
 * Created by Silas.
 * Date: 2016/11/16
 * Time: 23:13
 */
public interface IAuthorityProvider {

    //获取单个区域，传入：id
    ResponseDTO<GAuthorityDTO> getAuthority(Integer var1);

    //获取所有权限菜单，返回树形结构
    ResponseDTO<List<GAuthorityDTO>> listAllAuthority();

    //通过角色id，返回树形结构权限菜单，传入roleId
    ResponseDTO<List<GAuthorityDTO>> getAuthorityByRoleId(Integer var1);

    //修改某个角色用户的权限列表
    ResponseDTO<List<GAuthorityDTO>> saveAuthByRoleId(GRoleAuthSaveDTO var1);

    //获取所有的角色列表
    ResponseDTO<List<GRoleDTO>> listAllRole();

    //获取某个角色信息
    ResponseDTO<GRoleDTO> getRole(Integer var1);

    //保存，新增某个角色信息
    ResponseDTO<GRoleDTO> saveRole(GRoleDTO var1);

    //删除某个角色信息
    ResponseDTO<Boolean> deleteRole(Integer var1);

    //用户登录接口，用户名，密码，JSESSIONID
    ResponseDTO<UsersDTO> login(String var1, String var2, String var3);

    //将客户端JSESSIONID注册到redis
    ResponseDTO<UserCacheDTO> registClient(String token, String JSESSIONID);

    //获取用户菜单接口，用户id
    ResponseDTO<List<GAuthorityDTO>> getMenuByUserId(Integer var1);

    //获取某个用户所授权的菜单数据，传入，JSESSIONID
    ResponseDTO<List<GAuthorityDTO>> getMenuByJSESSIONID(String var1);

    //判断某个JSESSION是否已经登录
    ResponseDTO<UserCacheDTO> authentication(String JSESSIONID);

    //退出登录
    ResponseDTO<Boolean> loginOut(String JSESSIONID);

}
